package com.sojson.entity.po;

import java.util.Date;

import com.sojson.base.impl.BaseDto;
import com.sojson.util.StringUtil;
import com.sojson.util.job.CronUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 定时任务调度表
 * 
 * @author liu
 * @date 2021-04-20
 */
@ApiModel("定时任务调度表")
public class SysJob extends BaseDto {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("任务名称")
    private String name;
    @ApiModelProperty("任务组名")
    private String group;
    @ApiModelProperty("调用目标字符串(Controller下的任何方法,格式:mapping.methodName('ry', true, 2000L, 316.50D, 100)(Controller类路径).(方法名)(参数列表))")
    private String invokeTarget;
    @ApiModelProperty("cron执行表达式")
    private String cronExpression;
    @ApiModelProperty("cron计划策略(1立即执行 2执行一次 3放弃执行)")
    private Integer misfirePolicy;
    @ApiModelProperty("是否并发执行(0允许 1禁止)")
    private Integer concurrent;
    @ApiModelProperty("任务状态(0正常 1暂停)")
    private Integer status;
    @ApiModelProperty("创建时间")
    private Date createdAt;
    @ApiModelProperty("更新时间")
    private Date updatedAt;
    @ApiModelProperty("备注")
    private String remark;

    /** 获取任务名称 */
    public String getName() {
        return name;
    }

    /** 设置任务名称 */
    public void setName(String name) {
        this.name = name;
    }

    /** 获取任务组名 */
    public String getGroup() {
        return group;
    }

    /** 设置任务组名 */
    public void setGroup(String group) {
        this.group = group;
    }

    /** 获取调用目标字符串(Controller下的任何方法,格式:mapping.methodName('ry', true, 2000L, 316.50D, 100)(Controller类路径).(方法名)(参数列表)) */
    public String getInvokeTarget() {
        return invokeTarget;
    }

    /** 设置调用目标字符串(Controller下的任何方法,格式:mapping.methodName('ry', true, 2000L, 316.50D, 100)(Controller类路径).(方法名)(参数列表)) */
    public void setInvokeTarget(String invokeTarget) {
        this.invokeTarget = invokeTarget;
    }

    /** 获取cron执行表达式cron执行表达式 */
    public String getCronExpression() {
        return cronExpression;
    }

    /** 设置cron执行表达式 */
    public void setCronExpression(String cronExpression) {
        this.cronExpression = cronExpression;
    }

    /** 获取任务下一次的执行时间 */
    public Date getNextValidTime() {
        if (StringUtil.isNotEmpty(cronExpression)) {
            return CronUtil.getNextExecution(cronExpression);
        }
        return null;
    }

    /** 获取计划执行错误策略(1立即执行 2执行一次 3放弃执行) */
    public Integer getMisfirePolicy() {
        return misfirePolicy;
    }

    /** 设置计划执行错误策略(1立即执行 2执行一次 3放弃执行) */
    public void setMisfirePolicy(Integer misfirePolicy) {
        this.misfirePolicy = misfirePolicy;
    }

    /** 获取是否并发执行(0允许 1禁止) */
    public Integer getConcurrent() {
        return concurrent;
    }

    /** 设置是否并发执行(0允许 1禁止) */
    public void setConcurrent(Integer concurrent) {
        this.concurrent = concurrent;
    }

    /** 获取任务状态(0正常 1暂停) */
    public Integer getStatus() {
        return status;
    }

    /** 设置任务状态(0正常 1暂停) */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /** 获取创建时间 */
    public Date getCreatedAt() {
        return createdAt;
    }

    /** 设置创建时间 */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /** 获取更新时间 */
    public Date getUpdatedAt() {
        return updatedAt;
    }

    /** 设置更新时间 */
    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    /** 获取备注 */
    @Override
    public String getRemark() {
        return remark;
    }

    /** 设置备注 */
    @Override
    public void setRemark(String remark) {
        this.remark = remark;
    }

}